class Solution
{
public:
    Solution(vector<int> &nums)
    {
        origin = nums;
        shuffled = nums;
        g = mt19937(rd());
    }

    vector<int> reset()
    {
        return origin;
    }

    vector<int> shuffle()
    {
        std::shuffle(shuffled.begin(), shuffled.end(), g);
        return shuffled;
    }

private:
    vector<int> origin, shuffled;
    random_device rd;
    mt19937 g;
};

/**
 * Your Solution object will be instantiated and called as such:
 * Solution* obj = new Solution(nums);
 * vector<int> param_1 = obj->reset();
 * vector<int> param_2 = obj->shuffle();
 */